package xyhoo.springframework.core;

/**
 * 包装运行时异常并保留其根本原因，该类被声明为abstract，以强制程序员继承并扩展它。
 * 与{@link NestedCheckedException}类相似不可避免，因为Java强制这两个类必须有不同的父类。
 */
public abstract class NestedRuntimeException extends RuntimeException {

    public NestedRuntimeException(String msg) {
        super(msg);
    }

    public NestedRuntimeException(String msg, Throwable cause) {
        super(msg, cause);
    }

    /**
     * 获取最内层异常原因
     *
     * @return 最内层异常
     */
    public Throwable getRootCause() {
        return NestedExceptionUtils.getRootCause(this);
    }

}
